/**
 * Copyright 2009. Felix Dorner.
 * This code is licensed under the Eclipse Public License v1.0
 * http://www.eclipse.org/org/documents/epl-v10.html
 *
 * $Id$
 */
package com.objectcarpentry.kaylee;

import org.eclipse.emf.common.util.EList;


/**
 * <!-- begin-user-doc -->
 * A representation of the model object '<em><b>Abstract Playlist</b></em>'.
 * <!-- end-user-doc -->
 *
 * <p>
 * The following features are supported:
 * <ul>
 *   <li>{@link com.objectcarpentry.kaylee.AbstractPlaylist#getController <em>Controller</em>}</li>
 * </ul>
 * </p>
 *
 * @see com.objectcarpentry.kaylee.KayleePackage#getAbstractPlaylist()
 * @model abstract="true" superTypes="com.objectcarpentry.kaylee.Playable com.objectcarpentry.kaylee.IPlaylist"
 * @generated
 */
public interface AbstractPlaylist<T extends Playable> extends Playable, IPlaylist {
	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	String copyright = "Copyright 2009. Felix Dorner.\nThis code is licensed under the Eclipse Public License v1.0\nhttp://www.eclipse.org/org/documents/epl-v10.html";

	/**
	 * Returns the value of the '<em><b>Controller</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Controller</em>' reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Controller</em>' attribute.
	 * @see #setController(IPlaylistController)
	 * @see com.objectcarpentry.kaylee.KayleePackage#getAbstractPlaylist_Controller()
	 * @model dataType="com.objectcarpentry.kaylee.IPlaylistController<T>" transient="true"
	 * @generated
	 */
	IPlaylistController<T> getController();

	/**
	 * Sets the value of the '{@link com.objectcarpentry.kaylee.AbstractPlaylist#getController <em>Controller</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Controller</em>' attribute.
	 * @see #getController()
	 * @generated
	 */
	void setController(IPlaylistController<T> value);

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @model kind="operation"
	 * @generated
	 */
	EList<T> getElements();

} // AbstractPlaylist
